package dp.onClass.class2.exer1002;

import java.util.*;

/**
 * 双11到了，据说这2天会下红包雨，每个红包有不同的价值，小k好开心，但有个规则，就只能接掉落在他身旁的10米范围内的红包（0-10这11个位置）。
 * 小k想尽可能的多抢红包，这样就可以去买一个华为手机，小k每秒种只能在移动不超过一米的范围内接住红包。小k一开始站在5这个位置，
 * 因此在第一秒，他只能移动到4,5,6这三个位置中其中一个位置上接红包。问小k最多可能接到多少价值的红包？
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<int[]> srcData = new ArrayList<>();
        int maxTime = -1;
        for (int i = 0; i < n; i++) {
            int[] single = new int[3];
            single[0] = sc.nextInt();
            single[1] = sc.nextInt();
            maxTime = Math.max(maxTime, single[1]);
            single[2] = sc.nextInt();
            srcData.add(single);
        }
        int[][] valueArr = new int[maxTime + 1][11];
        for (int[] data : srcData) {
            valueArr[data[1]][data[0]] = data[2];
        }
        int[][] dp = new int[maxTime + 1][11];
        for (int i = 0; i <= maxTime; i++) {
            Arrays.fill(dp[i], -1);
        }
        dp[0][5] = 0;
        for (int i = 1; i <= maxTime; i++) {
            for (int j = 0; j <= 10; j++) {
                if (j == 0) {
                    if (dp[i - 1][j] != -1) {
                        dp[i][j] = dp[i - 1][j] + valueArr[i][j];
                    }
                    if (dp[i - 1][j + 1] != -1) {
                        dp[i][j] = Math.max(dp[i][j], dp[i - 1][j + 1] + valueArr[i][j]);
                    }
                } else if (j == 10) {
                    if (dp[i - 1][j] != -1) {
                        dp[i][j] = dp[i - 1][j] + valueArr[i][j];
                    }
                    if (dp[i - 1][j - 1] != -1) {
                        dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1] + valueArr[i][j]);
                    }
                } else {
                    if (dp[i - 1][j] != -1) {
                        dp[i][j] = dp[i - 1][j] + valueArr[i][j];
                    }
                    if (dp[i - 1][j - 1] != -1) {
                        dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1] + valueArr[i][j]);
                    }
                    if (dp[i - 1][j + 1] != -1) {
                        dp[i][j] = Math.max(dp[i][j], dp[i - 1][j + 1] + valueArr[i][j]);
                    }
                }
            }
        }
        int maxRet = -1;
        for (int i = 0; i <= 10; i++) {
            maxRet = Math.max(maxRet, dp[maxTime][i]);
        }
        System.out.println(maxRet);
    }
}
